Flask এবং FastAPI দুটি জনপ্রিয় Python ওয়েব ফ্রেমওয়ার্ক যা দিয়ে দ্রুত এবং কার্যকরী RESTful API তৈরি করা যায়। Flask একটি সহজ, মিনিমালিস্ট ফ্রেমওয়ার্ক হলেও, FastAPI একটি অত্যন্ত দ্রুত এবং আধুনিক ফ্রেমওয়ার্ক যা Python 3.6+ এর জন্য বিশেষভাবে ডিজাইন করা হয়েছে এবং এর আসল সুবিধা হল এসিং (Asynchronous) সাপোর্ট এবং স্বয়ংক্রিয় ডকুমেন্টেশন। নিচে Flask এবং FastAPI দিয়ে REST API তৈরি করার একটি উদাহরণ দেওয়া হলো।
১. Flask দিয়ে REST API তৈরি
Flask একটি খুবই লাইটওয়েট এবং মিনিমালিস্ট ওয়েব ফ্রেমওয়ার্ক, যা RESTful API তৈরি করতে সহজ। Flask দিয়ে একটি API তৈরি করার জন্য আপনাকে Flask লাইব্রেরি ইনস্টল করতে হবে এবং একটি route এবং view function তৈরি করতে হবে।
১.১ Flask ইনস্টলেশন
প্রথমে Flask ইনস্টল করুন:
pip install flask
১.২ Flask REST API তৈরি
এখন, আমরা একটি সিম্পল REST API তৈরি করবো যা HTTP GET এবং POST রিকোয়েস্ট গ্রহণ করবে।
from flask import Flask, jsonify, request
app = Flask(__name__)
# GET endpoint
@app.route('/api/greet', methods=['GET'])
def greet():
return jsonify({"message": "Hello, World!"})
# POST endpoint
@app.route('/api/add', methods=['POST'])
def add():
data = request.get_json() # JSON রিকোয়েস্টের ডেটা নিন
result = data['a'] + data['b'] # a এবং b এর যোগফল বের করুন
return jsonify({"result": result})
if __name__ == '__main__':
app.run(debug=True)
১.৩ Flask API ব্যাখ্যা
/api/greet: এটি একটিGETরিকোয়েস্ট রিসিভ করে এবং একটিJSONরেসপন্স পাঠায়।/api/add: এটি একটিPOSTরিকোয়েস্ট গ্রহণ করে এবং রিকোয়েস্টের JSON ডেটা (যেমনaএবংb) ব্যবহার করে যোগফল হিসাব করে রেসপন্স পাঠায়।
১.৪ Flask API চালানো
কোডটি চালাতে, টার্মিনালে নিচের কমান্ডটি দিন:
python app.py
এটি আপনার API লোকাল হোস্টে চালু করবে (সাধারণত http://127.0.0.1:5000/)।
২. FastAPI দিয়ে REST API তৈরি
FastAPI একটি খুব দ্রুত এবং আধুনিক ফ্রেমওয়ার্ক যা Python 3.6+ দিয়ে তৈরি করা হয়েছে। এটি automatic data validation, async support, এবং automatic interactive documentation (Swagger) দিয়ে সুবিধাজনক করে তোলে।
২.১ FastAPI ইনস্টলেশন
FastAPI ইনস্টল করতে, নিচের কমান্ডটি ব্যবহার করুন:
pip install fastapi
pip install uvicorn
uvicorn হল একটি ASGI সার্ভার যা FastAPI এর সাথে কাজ করে।
২.২ FastAPI REST API তৈরি
এখন, আমরা একটি সিম্পল FastAPI REST API তৈরি করবো।
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
# Pydantic মডেল তৈরি (data validation)
class Numbers(BaseModel):
a: int
b: int
# GET endpoint
@app.get("/api/greet")
def greet():
return {"message": "Hello, World!"}
# POST endpoint
@app.post("/api/add")
def add(numbers: Numbers):
result = numbers.a + numbers.b
return {"result": result}
২.৩ FastAPI API ব্যাখ্যা
/api/greet: এটি একটিGETরিকোয়েস্ট রিসিভ করে এবং একটিJSONরেসপন্স পাঠায়।/api/add: এটি একটিPOSTরিকোয়েস্ট গ্রহণ করে, যেখানেNumbersক্লাসের মধ্যেaএবংbনামক দুটি ইনপুট নেয় এবং তাদের যোগফল রিটার্ন করে।
২.৪ FastAPI API চালানো
কোডটি চালাতে, আপনি uvicorn ব্যবহার করতে পারবেন:
uvicorn app:app --reload
এটি আপনার API কে লোকাল হোস্টে চালু করবে (http://127.0.0.1:8000/)।
২.৫ FastAPI এর ফিচার
- Data validation:
pydanticব্যবহার করে ইনপুট ডেটা অটোমেটিক্যালি যাচাই করা হয়। - Interactive API docs: FastAPI আপনাকে Swagger UI এবং ReDoc ডকুমেন্টেশন অটোমেটিক্যালি প্রদান করে। Swagger UI দেখতে
http://127.0.0.1:8000/docsএ যান এবং ReDoc দেখতেhttp://127.0.0.1:8000/redocএ যান।
৩. Flask এবং FastAPI তুলনা
| Feature | Flask | FastAPI |
|---|---|---|
| Speed | দ্রুত, তবে অপেক্ষাকৃত কম দ্রুত | খুব দ্রুত, সঠিকভাবে অ্যাসিঙ্ক্রোনাস |
| Ease of Use | সহজ এবং জনপ্রিয় | আধুনিক, উন্নত এবং স্বয়ংক্রিয় ডকুমেন্টেশন |
| Async Support | Limited (এটি Flask 2.0 এ কিছুটা পাওয়া যায়) | সম্পূর্ণ অ্যাসিঙ্ক্রোনাস সমর্থন |
| Automatic Docs | না | হ্যাঁ, Swagger এবং ReDoc ডকুমেন্টেশন |
| Validation | ম্যানুয়ালি করতে হয় | পিডানটিক দ্বারা স্বয়ংক্রিয় ডেটা ভ্যালিডেশন |
| Performance | ভাল, তবে FastAPI এর তুলনায় কম | খুব ভালো, কারণ এটি ASGI সার্ভার ব্যবহার করে |
সারাংশ
- Flask: এটি একটি লাইটওয়েট, মিনিমালিস্ট ফ্রেমওয়ার্ক যা সহজে ব্যবহারযোগ্য এবং REST API তৈরি করতে অনেক জনপ্রিয়। তবে, এতে কিছু সীমাবদ্ধতা রয়েছে যেমন অ্যাসিঙ্ক্রোনাস সাপোর্ট এবং স্বয়ংক্রিয় ডকুমেন্টেশন এর অভাব।
- FastAPI: এটি একটি অত্যন্ত দ্রুত, আধুনিক এবং ফিচার-প্যাকড ফ্রেমওয়ার্ক যা Python 3.6+ এর জন্য ডিজাইন করা হয়েছে। এটি automatic data validation, async support, এবং interactive documentation সরবরাহ করে, যা API উন্নয়নে সহায়ক।
FastAPI এর অ্যাডভান্সড ফিচার এবং পারফরম্যান্সের কারণে এটি বৃহৎ, স্কেলেবল এবং দ্রুত ওয়েব অ্যাপ্লিকেশন তৈরি করতে উপযুক্ত, বিশেষত যখন অ্যাসিঙ্ক্রোনাস কোডিং এবং দ্রুত API রেসপন্স প্রয়োজন হয়।
Read more